/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa165.mushroom.website.dao;


import cz.muni.fi.pa165.mushroom.website.entities.Forest;
import cz.muni.fi.pa165.mushroom.website.entities.Mushroom;

import java.util.List;

/**
 * DAO interface for Forest entity
 *
 * @author Pavol Donko
 */
public interface ForestDao {
    /**
     * Method that adds Forest object into the DB.
     *
     * @param forest Forest to be created in DB
     * @return newly created Forest object from the DB.
     */
    public void createForest(Forest forest);

    /**
     * Method that updates change of Forest object in the DB.
     *
     * @param forest Forest in DB for updating
     * @return updated Forest object from the DB.
     */
    public void updateForest(Forest forest);

    /**
     * Method that deletes Forest object from the DB.
     *
     * @param forest
     * @return deleted Forest object, that was from the DB.
     */
    public void removeForest(Forest forest);

    /**
     * Method that search for specific Forest object from the DB.
     *
     * @param id
     * @return founded Forest from the DB.
     */
    public Forest findForest(Long id);

    /**
     * Method that gets all Forest objects from the DB.
     *
     * @return list of all forests from the DB.
     */
    public List<Forest> listForests();

    /**
     * Method that search for specific Forest object from the DB.
     *
     * @param forest
     * @return list of all suitable Forest objects
     */
    public List<Mushroom> listFoundMushrooms(Forest forest);
}
